package ticketseller;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * @功能
 * @创建时间 2019/12/21
 * 问题1 size重读
 * 问题2 票重读
 */
public class TicketSeller5 {
    static List<String> tickets = new ArrayList<>();
    static {
    for(int i =0; i<1000;i++)
        tickets.add("赛编号，"+i);
    }
 static synchronized String Remove(){  //使remove没有问题，但程序还是有问题，remove不会重复，但会空
     if (tickets.size()>0)
     return tickets.remove(0);
     else
         return null;
 }
    public static void main(String[] args) {
        for(int i = 0;i<10;i++){
            new Thread(()->{
                while (tickets.size() > 0){
                   //这部分等待操作与remove操作之间不具备原子性
                   try{
                        TimeUnit.MICROSECONDS.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                  System.out.println("销售了--"+  Remove());

                }
            }).start();
        }
    }
}
